package com.chenl.provider.DEMOS.设计模式.装饰器模式;

/**
 * 3.抽象装饰器
 * 其内部必然有一个属性指向原始对象
 * 其实现一般是一个抽象类，主要是为了让其子类按照其构造形式传入一个原始对象，这是强制的通用行为
 * 当然，如果系统中逻辑单一，并不需要实现许多装饰器，那么我们可以直接省略该类，而直接实现一个具体装饰器即可
 */
public abstract class FoodDecorate implements Food{
    //适配器模式(对象适配器):只需要将实现的原Food接口改为目标接口,然后重写目标接口中的方法 --适配目标接口的对象
    //装饰器模式:实现原接口,注入原接口对象--被装饰接口的对象,还是原来的接口的对象
    //桥接模式:直接把实现的接口去掉,自己就是一个单独的抽象类 --自己就是单独的对象
    public Food food;
    public FoodDecorate(Food food){
        this.food=food;
    }
    @Override
    public void effect() {
        food.effect();
    }
}
